CXX = g++

INCLUDES = -Iinclude -I../shared -I../shared/include
CPPFLAGS = -lGL -lGLU -lglut -lGLEW -Wall -lm 
CPPFLAGS += $(INCLUDES)


OUTDIR = obj/
OUTFILE = main



MPATH=$(realpath $(lastword $(MAKEFILE_LIST)))
NOTHING = 
SPACE = $(NOTHING) $(NOTHING)


ifdef GPROF
	DBG = 1
	CPPFLAGS += -pg
endif

ifdef DBG
	CPPFLAGS +=  -g -pedantic -Wextra
else
	CPPFLAGS += -O3
endif

ifndef NOOMP
	CPPFLAGS += -fopenmp
endif


OUTDIR = out/
OUTFILE = main

SOURCE = $(wildcard *.cpp) 
OBJ = $(OUTDIR)$(subst $(SPACE), $(OUTDIR),$(SOURCE:.cpp=.o))

EXTERNAL = ../shared/afmm/lib/afmm.a ../shared/configParser/lib/Config.a ../shared/lzma/lib/lzma.a

ABSOUT=$(MPATH:Makefile=)$(OUTDIR)

default:all

all:external $(OBJ)
	$(CXX) $(CPPFLAGS) -o $(OUTFILE) $(OBJ) $(EXTERNAL)
	
external:
	make -C ../shared/configParser -f Makefile
	make -C ../shared/lzma -f Makefile	
	make -C ../shared/afmm -f Makefile

library : all
	@mkdir -p lib
	@ar rvs lib/imconvert.a $(OUTDIR)*.o


$(OUTDIR)%.o : %.cpp
	@mkdir -p $(OUTDIR)
	$(CXX) $(CPPFLAGS) -c $< -o $@

clean:
	$(RM) *.o *.gch
	$(RM) -rf lib
	$(RM) -rf out
	$(RM) "./main"

clean-lib: clean
	$(RM) -rf lib/

clean-full: clean clean-lib
	make -C ../shared/afmm -f Makefile clean
	make -C ../shared/lzma -f Makefile clean
	make -C ../shared/configParser -f Makefile clean
